﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BasicCSharp
{
    public class CSharpGirisOrnekleri
    {

        public static string sonucDondurenMethod()
        {
            Console.WriteLine("Program başladı");
            Console.WriteLine("Program bitti");
            return "Program Çalıştı";
        }

        public static void programCalistir()
        {
            Console.WriteLine("Program başladı");
            Console.WriteLine("Program bitti");
            Console.ReadLine();
        }

        public static void projeyiBuildEtmekIcin()
        {
            Console.WriteLine("ctrl + shift B");
            Console.WriteLine("Projeyi derler");
            Console.WriteLine("Build klasörü güncellenir");
            Console.ReadLine();
        }
        public static void kodlarinAciklamasinaGitmek()
        {
            Console.WriteLine("F12 ye basılınca açıklamaya gider");
            Console.ReadLine();
        }
        public static void SourceControlKullanimi()
        {
            Console.WriteLine("Source controldan dosyaların alınması");
            Console.WriteLine("Source Control Connect");
            Console.WriteLine("Linki Team menusune");
            Console.WriteLine("Kullanıcı adı ve şifre gir");
            Console.WriteLine("Map et");
            Console.WriteLine("solutionı aç");
            Console.WriteLine("Kodları Göndermek için Check-in");
            Console.WriteLine("Kodları almak için Get Latest Version");
        }

        public static void methodOrnegi()
        {
            for (int i = 0; i < 10000; i++)
            {
                Console.WriteLine("1 Kez memoryde yer alır");
                Console.WriteLine("Statik method çalıştırılması");
                pratikKodlarınCalismasi();
            }

            for (int i = 0; i < 10000; i++)
            {
                Console.WriteLine("Her kullanıldığında memoryde yer alır");
                Console.WriteLine("Instance method çalıştırılması");
                Console.WriteLine(Guid.NewGuid());
                Console.ReadLine();
            }

        }
        public static void sayilariYuvalarma()
        {
            decimal safSayi = 12121.121313M;
            Console.WriteLine(safSayi);

            Console.WriteLine("islenmiş sayı :" + Math.Round(safSayi, 0));
            Console.ReadLine();

        }
        public static void sonsuzaKadarUygulamaninCalismasi()
        {
            while (true)
            {
                Console.WriteLine("***************************************");
                Console.WriteLine("isimizi giriniz");
                string isim = Console.ReadLine();
                if (isim.Contains("e"))
                    Console.WriteLine("isminizde e harfi vardır");
                else
                    Console.WriteLine("isminizde e harfi yoktur");
                Console.WriteLine("***************************************");

            }
        }
        public static void donguOrnekleri()
        {
            donguOrnekleriDoOrnekleri();
            forOrnekleri();
            Console.ReadLine();
        }
        public static void forOrnekleri()
        {
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine(i);
            }


            string[] isimler = { "kemal", "sunal", "metin", "akpınar" };

            Console.WriteLine("Dizileri çalıştıran döngüler");
            foreach (var item in isimler)
            {
                Console.WriteLine(item);
            }
            Console.ReadLine();
        }
        public static void donguOrnekleriDoOrnekleri()
        {
            int donguDeger = 0;
            while (donguDeger < 10)
            {
                Console.WriteLine(donguDeger);
                donguDeger = donguDeger + 1;
            }

            int adet = 0;
            do
            {
                Console.WriteLine("do while adet:" + adet);
                adet = adet + 1;
            } while (adet < 20);
        }
        public static void odevElseIfKullanimi()
        {
            int a = 66;
            if (a > 30)
            {
                Console.WriteLine("Örnek 1: a 30 dan büyüktür");
            }
            else
            {
                Console.WriteLine("Örnek 1:a 70 den küçüktür");
            }

            if (a > 30)
            {
                Console.WriteLine("Örnek 2:a 30 dan büyüktür");
            }
            else if (a < 70)
            {
                Console.WriteLine("Örnek 2:a 70 den küçüktür");
            }
        }
        public static void KontrolIfadeleri()
        {
            BasitIfOrnegi();
            switchCaseOrnegi();
        }
        public static void BasitIfOrnegi()
        {
            Console.WriteLine("Klasik kontrol ifadeleri");

            if (1 == 1)
            {
                Console.WriteLine("1 1 e eşittir");
            }

            if (3 == 4)
            {

            }
            else
            {
                Console.WriteLine("3 4 e eşit değildir.");
            }
            Console.ReadLine();
        }
        /// Kural methodlar 10 satırı aşmasın
        /// </summary>
        public static void switchCaseOrnegi()
        {
            string sehir = "Ankara";
            Console.WriteLine("Hızlı seçim için switch case kullanılır");
            switch (sehir)
            {
                case "İzmir":
                    Console.WriteLine("Kızları güzel");
                    break;
                case "Ankara":
                    Console.WriteLine("Ankaranın elması güzel");
                    break;
                default:
                    break;
            }
            Console.ReadLine();
        }
        public static void diziOrnegi()
        {
            Console.WriteLine("Diziler referans tipidir.");
            Console.WriteLine("İçinde birden fazla data tutmaya yarar");
            Console.WriteLine("Köşeli parantez diziyi tanımlar");
            int x = 0;
            string y = "Kemal";
            //Çoğul halleri
            int[] MyKume = { 1, 3, 5, 7 };
            string[] strKume = { "kerem", "aslı" };
            Console.WriteLine("Küme parantezleri birden fazla değişken atar");

        }
        public static void ReferansTypeVeriOrnekleri()
        {
            int y = 120;
            Console.WriteLine("Referans veri tipleri , memorydeki adrese göre çalışır");

            string x = "Mustafa Kemal Atatürk";
            Console.WriteLine(x);
            Console.ReadLine();
        }
        public static void ValueTypeVeriTipleriOrnekleri()
        {
            Console.WriteLine("iki tür veri tipi vardır.");
            Console.WriteLine("A.Value type");
            Console.WriteLine("B.Referans type");
            Console.WriteLine("Value type değişkenlere değer atanmalıdır.");
            //Value Typelar
            Boolean EnKucukSemtBebek = true; //doğru case sistemi
            bool Olimpiyatsonuc = false;
            Console.WriteLine(Olimpiyatsonuc);
            Console.ReadLine();
            int x = 44;
            Console.WriteLine("integer , tamsayı :" + x);
            Console.ReadLine();
            //Structlar birer value typedır
            Guid MyGuid = Guid.NewGuid();
            Console.WriteLine(MyGuid);
            Console.ReadLine();

            int KucukInt = 1217772;
            uint BuyukInt = 121212172; // daha büyük integer değer tutar.
            Console.WriteLine(BuyukInt);
            Console.ReadLine();

            Console.WriteLine("integer için birden fazla veritipi "
                            + "memory sıkıntısından"
                            + "dolayı çıkmştır");
        }
        public static void CaseSensitiveDegiskenTanimlama()
        {
            Console.WriteLine("Case büyük küçük harf uyumu");
            bool EnKucukSemtBebek = true; //doğru case sistemi
            bool ENBUYUKSEMTARNAVUTKOY = false;//hatalı tanımlama case.
            Console.WriteLine("ilk harfleri büyük yazalım");
        }
        public static void mantıksalDegerOkuma2()
        {
            Console.WriteLine("Aynı method isiminden ikincisi olmaz");
            Console.WriteLine("En büyük kim ?");
            string a = Console.ReadLine();
            if (a == "GS")
                Console.WriteLine("En büyük  galatasaray");
            else
                Console.WriteLine("Hatalı giriş yaptınız.");
            Console.ReadLine();
        }
        public static void mantıksalDegerOkuma()
        {
            Console.WriteLine("En büyük kim ?");
            string a = Console.ReadLine();
            if (a == "GS")
                Console.WriteLine("En büyük  galatasaray");
            else
                Console.WriteLine("Hatalı giriş yaptınız.");

            Console.WriteLine("Program Bitti");
            Console.Read();
        }
        public static void ekrandanDegerOkuma()
        {
            Console.WriteLine("En büyük kim ?");
            string a = Console.ReadLine();
            Console.WriteLine("En büyük : " + a + "'dır.");
            Console.ReadLine();
        }
        public static void pratikKodlarınCalismasi()
        {
            Console.WriteLine("Ders 2 tekrar");
            Console.WriteLine("cw yazıp taba basarak snippetler çalışır.");
            Console.WriteLine("snippetlerle hayat kolay");
            Console.WriteLine("özellikle for snippeti çok kullanılır");
            Console.ReadLine();

        }
        public static void consoleRenkDegistir()
        {
            string c = "Süleyman Padişah";
            Console.ForegroundColor = ConsoleColor.Blue;
            Console.BackgroundColor = ConsoleColor.Yellow;

            Console.WriteLine(c);
            Console.ReadLine();
        }

        public static void runtimeHatası()
        {
            int a = 300;
            int b = 0;

            Console.WriteLine(a / b);
            Console.ReadLine();
        }
    }
}
